package com.zhuanzhuan.hero.user.vo;

import com.zhuanzhuan.hero.user.vo.label.FraternityAuthLabelVO;
import com.zhuanzhuan.hero.user.vo.label.LabelInfoVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * @ClassName UserDetailVO
 * @Description  用户详情信息
 * @Author hanjunjun
 * @Date 2024/6/18 19:58
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
public class UserDetailVO extends UserBaseInfoVO {

    /**
     * 运营标签  包含icon
     */
    private LabelInfoVO businessLabelDetail;

    /**
     * 粉丝数、靠谱数等
     */
    private List<UserCountInfo> userRecords;

    /**
     * 会员编号
     */
    private String memberNo;

    /**
     * 引导开通会员文案
     */
    private OpenMemberGuideVO openMemberGuide;

    /**
     * 运营标签  baseInfo
     */

    /**
     * 是否已实人认证
     */
    private boolean realPersonCertified;

    /**
     * 真实姓名
     */
    private String realName;

    /**
     * 是否已企业认证
     */
    private boolean enterpriseCertified;

    /**
     * 企业名称
     */
    private String enterpriseName;

    /**
     * 公司职位   baseInfo
     */

    /**
     * 主营品类
     */
    private List<String> mainProductCates;

    /**
     * 封面
     */
    private String backdrop;

    /**
     * 个人简介
     */
    private String personalDescription;

    /**
     * 运营审核的身份   门店、回收商、电商平台、大货供应商、抖音达人
     */
    private List<CertifiedIdentieVO> certifiedIdenties;

    /**
     * 优势介绍   一级-三级
     */
    private List<String> advantagesIntroduction;

    /**
     * 服务能力
     */
    private List<String> serviceabilities;

    /**
     * 邀请官/推荐官信息
     */
    private UserBriefInfoVO inviter;

    /**
     * 功能区  我的回收单、我卖的、访客记录
      */
    private List<FunctionalDomainItem> functionalDomain;

    /**
     * 是否展示访客记录入口   客态时有值
     */
    private Boolean showVisitRecord;

    /**
     * 近期动态
     */
    private List<String> recentUpdates;

    /**
     * 个人信息完善程度
     */
    private PersonInfoPerfectionVO personInfoPerfectDegree;

    /**
     * 靠谱详情页url
     */
    private String reliableDetailPagelUrl;

    //--------------------客态独有------------------------

    /**
     * 客态-店铺地址
     */
    private String storeAddress;

    /**
     * 客态-联系方式
     */
    private List<ContactInformationVO> contactInformations;

    /**
     * 客态-靠谱按钮
     */
    private ReliableBtn reliableBtn;

    //-------------------------------------------------------

    /**
     * 标签: 滚动显示
     */
    private List<FraternityAuthLabelVO> fraternityAuthLabels;

    /**
     * 分组名称
     */
    private List<String> groupNameList;

    /**
     * 是否公开联系方式,0-不公开、1-公开
     */
    private Integer isPublicContact;
    /**
     * 是否要求关注,0-不要求、1-要求
     */
    private Integer isRequireAttention;

    @Data
    @NoArgsConstructor
    public static class CertifiedIdentieVO {

        /**
         * 身份名称 eg：门店、回收商
         */
        private String identityName;

        /**
         * 审核照片  不赋值
         */
        private List<String> auditPics;

        public CertifiedIdentieVO(String identityName) {
            this.identityName = identityName;
        }
    }

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class PersonInfoPerfectionVO {

        /**
         * 是否已完成
         */
        private boolean completed;

        /**
         * 未完成的提示文案
         */
        private String tips;

        public static PersonInfoPerfectionVO success() {
            return new PersonInfoPerfectionVO(true, null);
        }

        public static PersonInfoPerfectionVO fail() {
            return new PersonInfoPerfectionVO(false, "用户信息不全，其他同行无法搜索到您，请补充");
        }
    }

    @Data
    @NoArgsConstructor
    public static class ContactInformationVO {

        /**
         * MOBILE-电话 WECHAT_NUM-微信 WECHAT_GROUP-微信群 DOUYIN-抖音
         */
        private String type;

        private String icon;

        /**
         * 文案：电话、微信
         */
        private String content;

        /**
         * 字符串值   eg：17623458990
         */
        private String strValue;

        /**
         * 扩展字段  如微信群二维码等
         */
        private ContactExtentValue extendValue;

        /**
         * 是否可点击
         */
        private Boolean canClick;

        /**
         * 不可点击时的文案  eg：该用户设置了联系方式不可见，直接跟他聊聊吧
         */
        private String tips;

        public ContactInformationVO(String type, String icon, String content) {
            this.type = type;
            this.icon = icon;
            this.content = content;
            this.canClick = true;
        }
    }

    @Data
    @NoArgsConstructor
    @Accessors(chain = true)
    public static class UserCountInfo {

        /**
         * 1-粉丝数、2-同行也关注ta、3-x人认为靠谱、4-交易订单数
         */
        private Integer type;

        /**
         * 展示文案   eg：也关注他
         */
        private String content;

        /**
         * 字符串值  eg：1.1w
         */
        private String strValue;

        /**
         * 图片列表
         */
        private List<String> photoList;

        /**
         * 跳转页面链接
         */
        private String targetUrl;

        public UserCountInfo(Integer type, String content, String strValue) {
            this.type = type;
            this.content = content;
            this.strValue = strValue;
        }
        public UserCountInfo(Integer type, String content, String strValue, String targetUrl) {
            this.type = type;
            this.content = content;
            this.strValue = strValue;
            this.targetUrl = targetUrl;
        }

        public UserCountInfo(Integer type, String content, List<String> photoList, String targetUrl) {
            this.type = type;
            this.content = content;
            this.photoList = photoList;
            this.targetUrl = targetUrl;
        }

    }

    @Data
    @NoArgsConstructor
    public static class ReliableBtn {
        /**
         * 按钮code
         *  WAIT_CERTIFY-靠谱、CANCEL_RELIABLE-取消靠谱、CANCEL_UNRELIABLE-取消不靠谱
         */
        private String btnCode;

        /**
         * 按钮名称
         *  靠谱、取消靠谱、取消不靠谱
         */
        private String btnName;

        /**
         * 是否已认证过  1-是0-否
         */
        private Integer isCertified;

    }

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class FunctionalDomainItem {

        /**
         * 1：我的回收单  2：我卖的  3：访客记录
         */
        private Integer functionalDomainType;

        private String icon;

        /**
         * 展示文案 eg：访客记录
         */
        private String content;

        /**
         * 跳转url
         */
        private String targetUrl;
    }

    @Data
    @NoArgsConstructor
    public static class ContactExtentValue {
        /**
         * 微信群二维码
         */
        private String wechatGroupCode;

        /**
         * 微信群名称
         */
        private String wechatGroupName;

        /**
         * 微信群简介
         */
        private String wechatGroupDesc;

        public ContactExtentValue(String wechatGroupCode, String wechatGroupName, String wechatGroupDesc) {
            this.wechatGroupCode = wechatGroupCode;
            this.wechatGroupName = wechatGroupName;
            this.wechatGroupDesc = wechatGroupDesc;
        }
    }
}
